Systems and methods for relaying messages in a communications system

ABSTRACT

The various embodiments described herein include methods, devices, and systems for relaying messages in a communications system. In one aspect, a method is performed at a server having one or more processors and memory storing instructions for execution by the one or more processors. The method includes: (1) obtaining a plurality of incoming messages; (2) identifying one or more messages from among the plurality of incoming messages, the one or more messages obtained from a first user; (3) receiving a feedback message from a second user about at least one of: the first user and a first message of the one or more messages; and (4) sending the feedback message from the second user to a plurality of users, where the plurality of users track at least one of: the first user and the first message.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/799,730, filed Feb. 24, 2020, entitled “Systems and Methods forRelaying Messages in a Communications System”, which is a continuationof U.S. patent application Ser. No. 15/842,787, filed Dec. 14, 2017,entitled “Systems and Methods For Relaying Messages in a CommunicationsSystem,” issued on Apr. 7, 2020 as U.S. Pat. No. 10,616,172, which is acontinuation of Ser. No. 15/434,007, filed Feb. 15, 2017, entitled“Systems and Methods for Relaying Messages in a Communications System,”issued on Apr. 17, 2018 as U.S. Pat. No. 9,948,596, which is acontinuation of U.S. patent application Ser. No. 14/520,229, filed Oct.21, 2014, issued on Feb. 21, 2017 as U.S. Pat. No. 9,577,964, which is acontinuation of U.S. patent application Ser. No. 13/676,028, filed Nov.13, 2012, issued on Oct. 21, 2014 as U.S. Pat. No. 8,868,669, which is adivisional of U.S. patent application Ser. No. 13/038,295, filed Mar. 1,2011, issued on Nov. 13, 2012 as U.S. Pat. No. 8,312,090, which is acontinuation of U.S. patent application Ser. No. 11/728,318, filed Mar.22, 2007, issued on Mar. 1, 2011 as U.S. Pat. No. 7,899,869, all ofwhich are incorporated by reference herein in their entirety.

This application is related to U.S. Pat. No. 7,865,553, filed Mar. 22,2007, entitled “Chat System Without Topic-Specific Rooms”; U.S. Pat. No.7,860,928, filed Mar. 22, 2007, entitled “Voting In Chat System WithoutTopic-Specific Rooms”; and U.S. Pat. No. 7,904,500, filed Mar. 22, 2007,entitled “Advertising In Chat System Without Topic-Specific Rooms,” allof which are hereby incorporated by reference herein in their entirety.

TECHNICAL FIELD

The disclosed embodiments relate generally to chat systems, includingbut not limited to methods, systems, and user interfaces for relayingmessages from various users and sources that are potentially of interestto the user without requiring the user to enter topic-specific chatrooms.

BACKGROUND

Chat system technology, commonly referred to as online chat, allowsusers to communicate in near-real time over a network, such as theInternet or an intranet. The most common forms of online chat aredirect, one-to-one chat, commonly referred to as instant messaging (or“IM”), and chat rooms. A chat room allows multiple users to communicatesynchronously within the confines of the chat room.

User interactions in chat room systems include: entering a particularchat room as an active user to type in messages and/or view messages,replying to messages in a chat room, saying messages displayed during achat session, and switching to a different chat room.

When a user is interested in conversing with other users (participants)in a particular chat room, the user enters the room either as aregistered user or as a guest. Each participant in a particular chatroom sees a message window for that chat room. Participants' messagesappear in the message window in the order that the messages are posted.A user can respond to a recent message by posting a reply in a responsedialog box. In a chat client, the newest messages are displayed eitherat the top or bottom of the message window. A message window willdisplay a pre-determined number of messages. When the maximum number ofmessages is reached, older messages are scrolled off the message windowto make room for newer messages as they are posted.

There are various technologies for implementing chat systems. One commonchat technology is referred to as IRC, short for “Internet Relay Chat.”IRC is a client-server technology in which users must use a specific IRCclient program to select and log in to chat rooms. IRC chat clients andchat server employ the TCP/IP (Internet) protocol for communications.Web-based chat technologies are also available.

In current chat systems, a user can only view or respond to messagesthat originate from a single topic-specific chat room. Thus, if a userwishes to participate in multiple chat rooms, the user must openmultiple sessions to keep track of different chat rooms. Further, thecurrent technology does not provide a convenient way for automaticallydetermining which conversations are likely to be of interest to theuser.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the aforementioned aspects of theinvention as well as additional aspects and embodiments thereof,reference should be made to the Description of Embodiments below, inconjunction with the following drawings in which like reference numeralsrefer to corresponding parts throughout the figures.

FIG. 1 is a block diagram illustrating an exemplary distributed computersystem according to certain embodiments of the invention.

FIG. 2 is a block diagram illustrating a chat subsystem, according tocertain embodiments of the invention.

FIG. 3 is a block diagram illustrating a client, according to certainembodiments of the invention.

FIG. 4 is a block diagram that illustrates a data structure 400 in auser information database such as user information database 116 of FIG.2, according to some embodiments.

FIG. 5 is a block diagram that illustrates a data structure in a chatdatabase such as chat database, according to some embodiments.

FIG. 6 is a high-level flowchart representing some of the steps forselecting messages of interest for the respective users in the chatsystem, according to certain embodiments of the invention.

FIG. 7 is a high-level flowchart representing some of the steps forfiltering messages to obtain target messages for sending to therespective users in the chat system, according to certain embodiments ofthe invention.

FIG. 8 is a high-level flowchart representing some of the steps fordisseminating popular messages to a larger audience in the chat system,according to certain embodiments of the invention.

FIG. 9 is a high-level flowchart representing some of the steps forsending advertising messages to a respective user in the chat system,according to certain embodiments of the invention.

FIG. 10 is one schematic of a chat GUI for displaying target messages tothe user, according to certain embodiments of the invention.

FIG. 11 is an alternate schematic of a chat GUI for displaying targetmessages to the user, according to certain embodiments of the invention.

FIG. 12 is another alternate schematic illustration of a chat GUI fordisplaying target messages to the user, according to certain embodimentsof the invention.

DESCRIPTION OF EMBODIMENTS

Methods, systems, user interfaces, and other aspects of the inventionare described. Reference will be made to certain embodiments of theinvention, examples of which are illustrated in the accompanyingdrawings. While the invention will be described in conjunction with theembodiments, it will be understood that it is not intended to limit theinvention to these particular embodiments alone. On the contrary, theinvention is intended to cover alternatives, modifications andequivalents that are within the spirit and scope of the invention. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

Moreover, in the following description, numerous specific details areset forth to provide a thorough understanding of the present invention.However, it will be apparent to one of ordinary skill in the art thatthe invention may be practiced without these particular details. Inother instances, methods, procedures, components, and networks that arewell known to those of ordinary skill in the art are not described indetail to avoid obscuring aspects of the present invention.

According to certain embodiments of the invention, a user in a chatsystem need not enter topic-specific chat rooms to view and reply tomessages that are of interest to the user. Instead, the user specifiesthe types of messages that the user is interested in receiving. The chatsystem then sends messages based on the specified types. In addition,the chat system may send, to the user, messages that are popular or thatare similar to messages that the user has received. The chat system maysend advertisements to the user. Some of the advertisements may be basedon the types of messages that the user receives or is interested inreceiving. Further, the chat system enables the user: 1) to track one ormore message threads, and 2) to give feedback on messages using afeedback GUI that is provided by the chat system.

According to one feature of certain embodiments, messages from real-timemessage streams are selected and filtered to obtain target messages fora given user. The system provides the user with a mechanism forspecifying selection and filtering criteria that the system can use whenselecting and filtering the real-time message streams to obtain thetarget messages for sending to the particular user. According to anotherfeature of an embodiment, the user can specify selection criteria usinga focus specification that can be modified by the user at any time. Thesystem also provides the user with user controls for controlling filtersthat are used by the system to filter messages to obtain target messagesto send to the user. According to yet another feature of certainembodiments, the system creates a first inverted index based on thefocus specifications of the plurality of users in the chat system. Thesystem also creates a second inverted index based on words recentlyentered in the chat system by the plurality of users. As part of themessage selection process, the incoming real-time message streams arematched against at least one of the inverted indexes.

According to some embodiments, a respective user of the chat system canprovide feedback data with respect to target messages that therespective user receives. The chat system evaluates feedback data fromthe respective users to identify popular messages. The chat systemprocesses the feedback data provided by the respective users to providefeedback results to at least some of the respective authors and to atleast some of the respective users who receive popular messages.According to some embodiments, at least a portion of the popularmessages is sent to a set of users that have not previously received thepopular messages.

According to certain embodiments, the chat system identifies one or moreadvertisements based in part on the respective focus specification ofthe respective user and sends the identified advertisements to therespective user.

FIG. 1 is a block diagram illustrating an exemplary distributed computersystem 100, according to certain embodiments of the invention. In FIG.1, system 100 may include one or more client computers 102, acommunications network 106 and a chat subsystem 108. Client computers102 can be any of a number of computing devices (e.g., Internet kiosk,personal digital assistant, cell phone, gaming device, desktop computer,laptop computer, handheld computer, or combinations thereof) used toenable the activities described below. Client computer(s) 102 is alsoreferred to herein as client(s). Client 102 includes a graphical userinterface (GUI) 111. One embodiment of client 102 is described ingreater detail herein with reference to FIG. 3. Client 102 is connectedto chat subsystem 108 via communications network 106. Chat subsystem 108includes one or more servers, such as server 112, connected to thecommunications network 106 via network communication module 122. Chatsubsystem 108 may also include user information database 116, chatdatabase 120.

Server 112 includes user processing module 124, and applications 128.The network communications module 122 connects server 112 to thecommunication network 106 and enables the receipt of communications fromthe communication network 106 and the provision of communications to thecommunication network 106 bound for client 102 or other destinations.Server 112 communicates with databases such as user informationdatabases 116, and chat database 120 via network communication module122. For example, the user may send registration information, such as ausername and password, to server 112, via communications network 122.Optionally, server 112 receives and verities the login information,thereby enabling server 112 to associate subsequent data received fromclient 102 with a particular user record in user information database116. As another example, user information processing module 124 may beused to verify login information and associate chat messages entered bythe user with the user's data record in user information database 116and/or in chat database 120. In some embodiments, the user may beidentified using a cookie stored on the client 102, or by a useridentifier that is stored by and associated with a browser toolbar orbrowser extension. One embodiment of server 112 is described in greaterdetail herein with reference to FIG. 2.

In the case of multiple servers, each server, such as server 112, iscoupled to a communications network 106 via a network communicationmodule 122. The communications network 106 may be the Internet, but mayalso be any local area network (LAN) and/or wide area network (WAN). Insome embodiments, server 112 is a Web server that manages chat messagesusing appropriate chat protocols. Alternatively, if server 112 is usedwithin an intranet, it may be an intranet server.

Applications 128 include application programs used for creating andupdating inverted indexes associated with the process of selectingmessages, application programs for selecting and filtering messages fromthe real-time message streams to obtain target messages for therespective users, and/or application programs for managing the rate ofsending target messages to the respective users in the chat system.Applications 128 are described in greater detail herein with referenceto FIG. 2. The user information processing module 124 assists inaccessing, updating and modifying the user information database 116. Theuser information database 116 stores various information associated withthe user including information related to chat messages created by theuser as described in greater detail herein in reference to FIG. 2.

Chat database 120 stores information on chat messages and may storeglobal information of chat subsystem 108 such as system defaultfunctions and default values. Chat database 120 is described in greaterdetail herein with reference to see FIG. 2.

In essence, server 112 is configured to manage certain aspects of chatsubsystem 108, including receiving requests from the user (associatedwith client 102), sending chat messages to clients 102 for display andreceiving information, such as messages, user registration informationand user preferences from clients 102.

In some embodiments, fewer and/or additional modules, functions ordatabases are included in chat subsystem 108 and server 112. The modulesshown in chat subsystem 108 and server 112 represent functions performedin a certain embodiments.

Notwithstanding the discrete blocks in FIG. 1, the figure is intended tobe a functional description of some embodiments of the invention ratherthan a structural description of functional elements in the embodiments.One of ordinary skill in the art will recognize that an actualimplementation might have the functional elements grouped or split amongvarious components. For example, user information database 116 may bepart of server 112. In some embodiments, user information database 116may be implemented using one or more servers whose primary function isto store and process user information. Similarly, chat database 120 maybe implemented on one or more servers. Moreover, one or more of theblocks in FIG. 1 may be implemented on one or more servers designed toprovide the described functionality. Although the description hereinrefers to certain features implemented in client 102 and certainfeatures implemented in server 112, the embodiments of the invention arenot limited to such distinctions. For example, features described hereinas being part of server 112 could be implemented in whole or in part inclient 102, and vice versa.

FIG. 2 is a block diagram illustrating chat subsystem 108, according tocertain embodiments of the invention. Chat subsystem 108 includes one ormore processing units (CPU's) 202, an optional user interface 205, oneor more network or other communications interfaces 204, memory 206, andone or more communication buses 208 for interconnecting thesecomponents. The communication buses 208 may include circuitry (sometimescalled a chipset) that interconnects and controls communications betweensystem components.

Memory 206 may include high speed random access memory and may alsoinclude non-volatile memory, such as one or more magnetic or opticaldisk storage devices. Memory 206 may optionally include one or morestorage devices remotely located from the CPU(s) 202. In someembodiments, memory 206 stores the following programs, modules and datastructures, or a subset or superset thereof:

-   -   an operating system 216 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module (or instructions) 122 that is        used for connecting chat subsystem 108 to other computers (e.g.,        clients 102) via one or more communication network interfaces        204 (wired or wireless) and one or more communication networks,        such as the Internet, other wide area networks, local area        networks, metropolitan area networks, and so on;    -   a server 112 for managing certain aspects of chat subsystem 108;    -   a user information database 116 for storing information        associated with the users, such as focus specifications 116 a,        user-entry history 116 b, user rate slider settings 116 c, and        user thread tracking data 116 d. Focus specifications 116 a,        user-entry history 116 b, user rate slider settings 116 c, and        user thread tracking data 116 d are described in greater detail        herein with reference to FIG. 4 and FIG. 5; and    -   a chat database 120 for storing information related to chat        messages such as selected messages data 120 a, filtered message        data 120 b, feedback results 120 c, and advertisement data 120        d.

Selected messages data 120 a includes messages selected based onrespective focus specifications for respective users. Filtered messagedata 120 b includes filtered (target) messages for the respective users.Feedback results 120 c include processed feedback data from usersregarding the chat messages, and advertisement data 120 d includesadvertisements that are selected for respective users.

In some embodiments, server 112 includes the following non-limitingexamples of elements, or a subset of such elements: a user informationprocessing module 124, and an applications module 128 that includesapplication programs, such as a chat application program 218, aninverted indexing application program 222, a message selectionapplication program 224 for assigning messages to the respective users,a message filtering application program 226 for obtaining targetmessages, a message transmission application program 228 for sendingtarget messages to the user at an appropriate rate, a popular messageselection application program 229 for selecting popular messages forsending to the user, and an advertisement selection application program230 for selecting advertisements for sending to the user. According tocertain embodiments, two or more of above application programs may becombined. As a non-limiting example, the functions of the aboveapplication programs may be performed by chat application program 218.According to some embodiments, server 112 uses chat application program218 to manage various aspects of the chat subsystem such as coordinatingthe functions of the inverted indexing application program 222, themessage selection application program 224, the filtering applicationprogram 226, the message transmission application program 228, userinformation database 116 and chat database 120. The functions of suchapplication programs and the chat database 120 are described in greaterdetail herein with reference to FIG. 6, FIG. 7, FIG. 8 and FIG. 9. Userinformation processing module 124 may be used for accessing andmodifying user information database 116. In some embodiments, server 112and/or the databases 116 and 120 may include additional modules.

FIG. 3 is a block diagram illustrating client 102, according to certainembodiments of the invention. Client 102 includes one or more processingunits (CPUs) 302, one or more network or other communications interfaces304, memory 306, and one or more communication buses 308 forinterconnecting these components. Client 102 may include a userinterface 310, for instance a display 312 with GUI 111 and a keyboard314. Memory 306 may include high speed random access memory and may alsoinclude non-volatile memory, such as one or more magnetic or opticalstorage disks. Memory 306 may include mass storage that is remotelylocated from CPUs 302. Memory 306 may store the following elements, or asubset or superset of such elements:

-   -   An operating system 316 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   Client applications 328 such as a Client chat application        program 330, message filtering program 331, and a browser        application program 332. The function of client chat application        330 is described in greater detail herein with reference to FIG.        6 and FIG. 7. The message filtering program 331 is described in        greater detail herein with reference to FIG. 5; and    -   Client storage 334 for storing data, including focus        specification 336 associated with the particular user, rate        slider settings 338 selected by the particular user, user-entry        history 340 specific to the particular user, thread tracking        data 342 associated with message threads that are tracked by the        particular user, feedback results 344 for the particular user,        and advertisement data 346 associated with the particular user.        The data in client storage 334 is periodically pushed to or        pulled by the server 112 to update the server's databases.

The above identified modules and applications in FIG. 2 and FIG. 3correspond to a set of instructions for performing a function describedabove. These modules (i.e., sets of instructions) need not beimplemented as separate software programs, procedures or modules, andthus various subsets of these modules may be combined or otherwisere-arranged in various embodiments. In some embodiments, memories 206and 306 may store a subset of the modules and data structures identifiedabove. Furthermore, memories 206 and 306 may store additional modulesand data structures not described above.

Although FIG. 2 and FIG. 3 show chat subsystem 108 and client 102 as anumber of discrete items, FIG. 2 and FIG. 3 are intended more as afunctional description of the various features which may be present inchat subsystem 108 and client 102 rather than as a structural schematicof the embodiments described herein. In practice, and as recognized bythose of ordinary skill in the art, items shown separately could becombined and some items could be separated. For example, some itemsshown separately in FIG. 2 could be implemented on single servers andsingle items could be implemented by one or more servers. As anotherexample, some of the databases shown in either of the figures may becombined while other databases may be separated into more granularcomponents. The actual number of servers in chat subsystem 108 and howfeatures are allocated among them may vary from implementation toimplementation, and may depend in part on the amount of data trafficthat the system handles during peak usage periods as well as duringaverage usage periods.

According to certain embodiments, a respective user is associated with afocus specification, such as focus specification 404 of FIG. 4. Theplurality of focus specifications may be stored as focus specifications116 a in user information database 116, for example. The user can usehis or her focus specification to specify selection criteria forselecting messages. from the real-time message streams that are ofinterest to the user. The selected messages are assigned to therespective user. Assigning messages to a user means that an associationis created between the selected message and the user. However, once amessage is assigned to a user does not mean that the assigned message isautomatically sent to the user. The messages that are assigned to a userare filtered using filtering criteria (rate slider data 408 of FIG. 4)that are controlled by the user to obtain target messages. At least aportion of the target messages are then displayed to the user. Whetheror not all the target messages are displayed to the user depends on thevolume of target messages and the transmission rate for sending thetarget messages to the user and/or the rate of display of the targetmessages.

According to certain embodiments, the user can specify topics ofinterest in the focus specification by specifying key words, naturallanguage expressions (such as string 404-1 of FIG. 4), computer languageexpressions, Boolean operators, etc., for example. The system maysupport specialized pattern matching language to enable users to specifyselection criteria in the form of high-precision constructs, forexample.

FIG. 4 is a block diagram that illustrates a data structure 400 in userinformation database such as user information database 116 of FIG. 2,according to some embodiments. Data structure 400 includes user data 402corresponding to the plurality of users such as User 1, User 2, . . . ,and User P of the chat system. For example, for a specified user such asUser 2, user data 402-2 includes focus specification data 404, userentry history 406, rate slider data 408, and thread tracking data 410.Focus specification data 404 includes user specified selection criteriasuch as strings 404-1, user specified identification of authors 404-2,user specified feeds 404-3, and user specified blogs 404-4, etc.According to certain embodiments, each of the user specified selectionmay be associated with a set of attributes. For example, the userspecified selection criterion 404-4 is associated with a set ofattributes such as font type 404-4 a, font color 404-4 b, and language404-4 c. Optionally, the user specified criterion may also be associatedwith a weight 404-4 d for use in a weighting function for obtainingtarget messages for the specified user. Focus specifications are used tocreate an inverted index as described in greater detail below. Userentry history 406 includes words recently entered by User 2 such asEntry A 406-1, Entry B 406-2, . . . , Entry N 406-3, etc. User entryhistory such as user entry history 406 is used for creating anotherinverted index as described in greater detail below. Rate slider data408 includes user specified transmission rate slider setting 408-1, userspecified popular slider setting 408-2, user specified topical slidersetting 408-3, and user specified tracked message slider setting 408-4.For example, the user may move the sliders provided by the chat systemGUI, such as those shown on FIG. 12, to desired levels. User specifiedslider settings are used as weighting functions for obtaining targetmessages as described in greater detail below. Thread tracking data 410includes message threads that are tracked by a specific user such asUser 2. For example, the tracked threads may be Thread T1 410-1, ThreadT2 410-2, . . . Thread TZ 410-3, etc. Each tracked thread may beassociated with a set of attributes. As a non-limiting example, ThreadTZ 410-3 is associated with a set of attributes such as font type 410-3a, font color 410-3 b, and language 410-3 c. Optionally, the specifiedtracked thread may also be associated with a weight 410-3 d for use inobtaining target messages for the specified user. Tracked threads aredescribed in greater detail below.

The focus specification may be in the form of a file or data structurethat can be modified by the user at any time. As another non-limitingexample, the focus specification may be presented in a window displayfor modification by the user. The user can edit the text in the focusspecification window. The focus specification can optionally includedisplay attributes associated with the respective user-specifiedselection criteria. Display attributes may include font type (font type404-4 a), font size, font color (font color 404-4 b), style, indentationdepth, language (language 404-4 c), etc. To illustrate, assume that theuser specifies “pottery” as one of the selection criteria in the focusspecification. Further assume that the user has selected italicizedAriel font in green, and the “English” language as the displayattributes associated with the selection criterion, “pottery.” In theevent that a target message regarding pottery is displayed to the user,such a message is displayed in English and in green italicized Arielfont. Thus, at a glance, the user can visually identify “pottery”related target messages easily when the target messages are scrollingpast in the message display window. In other words, the user can specifydisplay attributes as visual aids by associating a topic of interestwith a set of user-specified display attributes.

Further, the user can specify sources of real-time information that areof interest to the user in the user's focus specification. For example,the user may specify a source as “messages by authors X, Y and Z”(identification of authors 404-2). Also, the user can specify real-timeinformation sources such as news feeds, RSS feeds (RSS 404-3), blogs(Blog 404-4), stock ticker data, TV close caption streams, etc.According to one embodiment, such real-time information sources areintegrated into the chat system by creating pseudo users to representsuch real-time information sources.

Also, the user can use the focus specification to exclude specificsources of real-time information. In other words, real-time informationstreams from the excluded sources are not matched against the user'sselection criteria.

In order to match incoming real-time information streams against theusers' focus specifications, the system creates an inverted index basedon focus specifications of the users in the chat system and by usinginverted indexing program 222, according to certain embodiments. Such aninverted index is herein referred to as a focus specification index. Thekeys of the focus specification index are the user-specifiedwords/expressions, user-specified channels (news, feeds, blogs, RSSfeeds, etc.), and the user id of the user that originated theuser-specified words/expressions, etc. The focus specification index isperiodically updated to reflect modifications made by users to theirrespective focus specifications. Message selection program 224 can usematching functions to match the words that appear in an incomingreal-time information stream against the focus specification index. Suchan incoming stream is assigned to those users for whom there is a match.The matching functions may include an appropriate time-dependent decayfunction. If a user neglects to specify any selection criteria in theuser's focus specification, the system provides default selectioncriteria for selecting messages for assigning to the user. For example,default selection criteria may be stored in chat database 120.

Optionally, the system may use inverted indexing program 222 to create asecond inverted index based on words recently entered by the respectiveusers. User-entry history data 116 b stores words recently entered bythe respective users. For example, as shown in FIG. 4, user-entryhistory 406 stores recently entered words such as Entries 406-1, 406-2,. . . 406-3, etc., associated with a particular user. Such an invertedindex can be periodically updated and is herein referred to as a“recent-entry” index. As previously explained, message selection program224 can use matching functions to match the words that appear in anincoming real-time information stream against both the focusspecification index and the recent-entry index.

User rate slider data 116 c stores settings specified by the respectiveuser for filtering criteria or filters. Non-limiting examples of filtersinclude: 1) a transmission rate slider, 2) a popular slider, 3) atopical slider, and 4) a tracked-message slider. Such filter settingsmay be stored as transmission rate slider setting 408-1, user specifiedpopular slider setting 408-2, user specified topical slider setting408-3, and user specified tracked message slider setting 408-4 as shownin FIG. 4. According to certain embodiments, the user can use thepopular slider, topical slider, and tracked slider to control the mixingratios of popular, topical and tracked target messages, respectively,that are sent to the user. According to certain embodiments, theuser-specified settings of the respective sliders correspond to weightsin appropriate weighting functions that are used for scoring a user'sassigned messages to obtain target messages. As the volume of incomingreal-time message streams increases, there may be more assigned messagesthan a user can view in a practical fashion. Thus, the system uses oneor more user-specified filters to select high scoring assigned messagesfor sending as target messages to the user at a reasonable rate. Theuser can control the rate that messages are sent using the messagetransmission rate slider. The user can use the popular slider to controlthe mixing ratios of messages to include some “popular” messages sent tothe user. Similarly, the user can use the topical slider andtracked-message slider, for adjusting the mixing ratios of differenttypes of messages sent to the user. Such sliders are illustrated in FIG.12 herein.

User thread-tracking data 116 d stores tracking information associatedwith the threads that are tracked by the respective user. For example,as shown in FIG. 4, the tracking information identifies the specificthreads such as threads 410-1, 410-2, . . . 410-3, etc., tracked by aparticular user. The tracking information can be used to select messagesfrom the tracked thread for assigning to the user and/or for controllingone or more thread-tracking features such as display attributes and thedisplay of anchor messages, as described in greater detail herein withreference to FIG. 10 and FIG. 11. An anchor message is the first messageof a tracked thread that the user has indicated interest in. Toillustrate, if a user decides to begin tracking the thread at message X,then message X becomes the anchor message for the thread of subsequentmessages that follow.

In some embodiments, users can explicitly deselect branches of a threadtree that do not interest them, and the system can automatically prunesubtrees of the thread tree that do not receive attention in the form ofcomments of further selections as containing interesting messages orthat receive deselection actions from a plurality of other users. Thispropagates the more interesting branches of the thread tree and keepsthe thread tree to a manageable size.

FIG. 5 is a block diagram that illustrates a data structure 500 in achat database such as chat database 120 of FIG. 2, according to someembodiments. Data structure 500 includes user chat data 502corresponding to the plurality of users such as User 1, User 2, . . . ,User P of the chat system. For example, for a specified user such asUser 2, user chat data 502-2 includes selected messages 504, target(filtered) messages 506, feedback results 508, and advertisements 510.Selected messages 504, target (filtered) messages 506, andadvertisements 510 may be associated with display attributes. Forexample, Message Tm 506-m has attributes such as font type 506-m 1, fontcolor 506-m 2, language 506-m 3, etc. For purposes of simplicity thedisplay attributes of selected messages and advertisements are not shownin data structure 500.

As described above, selected messages are messages selected based on theselection criteria specified in the respective focus specification for aspecified user. The selected messages are associated with the specifieduser. For example, selected messages such as Message S1 504-1, . . . ,Message Sn 504-n, etc., are assigned to User 2. The selected messagesfor User 2 are filtered using filtering criteria (rate slider data 408)to obtain target or filtered messages. For example, selected messages504 are filtered using filtering criteria based on rate slider data 408to obtain target messages such as Message T1 506-1, . . . , Message Tm506-m, etc., for User 2. Feedback results 508 include the feedbackreceived with respect to respective messages authored by User 2. Forexample, User 2 may receive feedback such as Feedback 508-1 for messageA, . . . , Feedback 508-2 for Message B, etc. Further, the chat systemmay send advertisements such as advertisement A 510-1, . . . ,Advertisement P 510-p, etc., to User 2.

In other words, the chat system may assign messages to a respective userbased on one or more reasons including: 1) the message is anadvertisement that the system would like to send to the user, 2) themessage belongs to a thread that is explicitly tracked by the respectiveuser, 3) the message is a popular message in the chat system (forexample, the message is tracked by many users), and 4) the messagematches at least one selection criterion in the respective user's focusspecification. According to certain embodiments, the weight of the abovereasons 2 to 4 are additive with respect to filtering selected messagesto obtain target messages to send to the respective user.

FIG. 6 is a high-level flowchart representing some of the steps forselecting messages to be assigned to a respective user, according tocertain embodiments. It will be appreciated by those of ordinary skillin the art that one or more of the acts described may be performed byhardware, software, or a combination thereof, as may be embodied in oneor more computing systems. FIG. 6 is described with reference to FIG. 2and FIG. 4 The server builds a first inverted index (focus specificationindex) based on the focus specifications of the plurality of usersparticipating in the chat system (602). For example, server 112 of FIG.2 uses inverted indexing program 222 to build the focus specificationindex based on the plurality of focus specifications stored in focusspecifications database 116 a. The focus specification index may beupdated as frequently as needed to reflect modifications, if any, madeby respective users and such that, on average, the messages selected forassignment are of current interest to the respective user. For example,the system can save “before modification” and “after modification”copies of the respective user's focus specification. The system cangenerate a list of differences based on the “before modification” and“after modification” copies. The system can then delete or add entriesto the inverted index based on the generated list of differences.Updates to user-specified channels (news feeds, blogs, RSS feeds, etc.)may result in updating associated data structures. For example, datastructures that include lists of users that would like to see “blog A”(404-4) channel messages is updated if a user made a recent modificationin his focus specification to include “blog A.”

Returning to FIG. 6, the server builds a second inverted index(recent-entry index) based on words recently entered by the respectiveusers (604). For example, server 112 of FIG. 2 uses inverted indexingprogram 222 to build the recent-entry index based on the recentlyentered words stored in user-entry history 406. The recent-entry indexmay be updated as frequently as needed to reflect currently enteredwords.

A message from the incoming real-time message streams is herein referredto as an incoming message. According to certain embodiments, the chatsystem attaches to an incoming message one or more of the following: 1)a time stamp, 2) information on source language, 3) a link to the parentmessage if the incoming message is a reply to another message, 4) aunique identifier for identifying the message, and 5) the identity ofthe author.

The server determines if an incoming message is to be selected forassignment to the respective users by matching the words in the incomingmessage against the focus specification index to determine which usershave specified an interest in the words of the incoming message (606).For example, server 112 uses message selection program 224 to determineif an incoming message is to be selected for assignment to therespective users. The incoming message is assigned to those users forwhom there is a match. The assigned message includes an indication ofthe quality of the match. For example, the selected message can includeannotations of the reasons for selecting the message. The annotationscan include the number of matching words, how unusual were the matchingwords. The more unusual the words, the greater the weight.

According to certain embodiments, server 112 uses message selectionprogram 224 to match the words in the incoming message against therecent-entry index (608). The incoming message is assigned to thoseusers for whom there is a match. The assigned message includes anindication of the quality of the match.

The server 112 uses message selection program 224 to determine whichusers are tracking the thread to which the incoming message belongs(610). The incoming message is assigned to those users who are trackingthe thread to which the incoming message belongs. The assigned messageincludes a relevance measure. As a non-limiting example, the relevancemeasure can include the distance between the node of the anchor messageand the node of the incoming message. Such a distance is also referredto herein as a thread length.

The server 112 uses message selection program 224 to determine thepopularity of the incoming message (612). For example, one measure ofpopularity may be determined by the number of matches the incomingmessage had when matched against the focus specification index and therecent-entry index. Another measure of popularity may be determined bythe number of users that are tracking the thread to which the incomingmessage belongs. The popularity of the incoming message may also bedetermined by measuring the size of the sub-tree under the incomingmessage. Incoming messages that exceed a pre-selected level ofpopularity are assigned to the respective users.

The server 112 uses message selection program 224 to determine theancestor messages of the incoming message up to a pre-determined numberof ancestor messages and assigns the incoming message to the authors ofthe ancestor messages (614).

It will be appreciated by those skilled in the art that some of theabove acts described with reference to FIG. 6 need not be performed inthe order described. For example, the acts of matching the incomingmessage against the focus specification index and the recent-entry indexas well as the act of determining which users are tracking the thread ofthe incoming message may be done concurrently using a distributedprocess. In certain embodiments, the system is designed to be“best-effort”, i.e., it provides no guarantees that any message willreach any user, which enables the implementers to exploit considerablefreedoms when distributing the system components among many computers.

As described above with reference to FIG. 6, as the real-time incomingmessages stream into the chat system, various selection operations areperformed on the incoming message to assign the message to one or morerespective users. According to certain embodiments, the system canperform filtering operations, described in greater detail with referenceto FIG. 7, as the incoming message is assigned to the respective user.According to other embodiments, a time slice approach is used for thefiltering operations. For example, assume that the time slice isselected to be Δt seconds. Rather than filtering an incoming message assoon as it is assigned to a user, the filtering operations are performedonce every Δt seconds. Thus, the filtering operations are performed on abundle of assigned messages at a time for the respective user. The sizeof the time slice may be pre-selected or dynamically selected based onthe system load. The more loaded the system, the larger the time slice,for example.

According to one embodiment, the system can send the assigned messagesto client 102 and allow client 102 to perform the filtering operationson the bundle of assigned messages. In other words, client 102 usesmessage filtering application program 331 to filter the bundle ofassigned messages to obtain target messages for displaying to therespective user associated with client 102.

According to certain other embodiments, server 112 performs thefiltering operations by using message filtering application program 226to obtain target messages. For purposes of explanation, FIG. 7 isdescribed by assuming that server 112 performs the filtering operations.

FIG. 7 is a high-level flowchart representing some of the steps forfiltering the selected messages for the respective users in the chatsystem, according to certain embodiments of the invention. It will beappreciated by those of ordinary skill in the art that one or more ofthe acts described may be performed by hardware, software, or acombination thereof, as may be embodied in one or more computingsystems. FIG. 7 is described with reference to FIG. 2 and FIG. 5.

Server 112 uses either the chat application program 218 and/or themessage filtering application program 226 of FIG. 2 to create a scoringrecord for a given assigned message (702). According to certainembodiments, the scoring record associated with an assigned messageincludes annotations of the reasons for selecting the message and/orother relevance measures for selecting the message. The reasons andrelevance measures for selecting a message is herein also referred to asrelevance factors. Each relevance factor is associated with a value.

Server 112 uses the message filtering application program 226 to applyappropriate weighting functions to the relevance factors in the scoringrecord associated with the respective assigned message (704). As anon-limiting example, for a given message, the respective relevancefactor value can be multiplied by appropriate normalizing factors andthen multiplied by the user-specified settings of appropriate filterssuch as the transmission rate slider, popular slider, topical slider,and the tracked-message slider. According to certain embodiments,appropriate time-dependent decay functions may be applied to one or moreof the relevance factor values to discount the value of a givenrelevance factor. Server 112 may provide default values for any of thefilters for which the user has not selected a setting.

Server 112 uses the message filtering program 226 to sum the values ofthe relevance factors so that the respective assigned message isassociated with a single score, according to certain embodiments (706).In the case of using time slices, the above filtering operations areperformed on the plurality of messages in the bundle of assignedmessages for a given time slice for the respective user.

The scored messages are merged with pending messages, if any (708).Pending messages are scored messages that are in a queue waiting for tobe sent to the user. The merged set of scored messages is sorted basedon the scores.

The server uses message transmission program 228 to transmit the sortedmessages at an appropriate transmission rate to client 102 associatedwith the respective user (710). The messages with the highest scores aresent first. According to certain embodiments, messages with scores belowa pre-selected score are discarded. According to certain otherembodiments, pending messages are timed out after a pre-selected periodof time.

According to some embodiments, the chat system may re-broadcast messagesthat exceed a pre-selected threshold of popularity in order todisseminate such messages to a larger audience. For example, if the chatsystem detects that message M receives tracking request that exceed apre-selected amount and/or the message receives positive feedback abovea pre-selected threshold, message M is re-broadcast to a set of userswho have not previously received message M. Feedback regarding receivedtarget messages and/or regarding the author of the target messages aredescribed in greater detail herein with reference to FIG. 10, FIG. 11and FIG. 12.

FIG. 8 is a high-level flowchart representing some of the steps fordisseminating popular messages to a larger audience in the chat system,according to certain embodiments of the invention. It will beappreciated by those of ordinary skill in the art that one or more ofthe acts described may be performed by hardware, software, or acombination thereof, as may be embodied in one or more computingsystems. At least a portion of target messages is sent to respectiveusers based on at least the selection criteria and the filteringcriteria of the respective users (802). Feedback data is received fromthe respective users regarding the received target messages and/orregarding the authors of the received target messages (804). Thefeedback data is evaluated to identify popular messages (806). At leasta portion of the identified popular messages are sent to a set of userswho have not previously received the popular messages (808). Feedbackdata is processed to provide feedback results to at least some of therespective authors and to at least some of the users who receive thepopular messages (810).

According to certain embodiments, messages that are advertisements thatthe system would like to send to a respective user are not subject tothe message selection and filtering process and are automatically sentto the respective user as a high priority target message. However,according to some other embodiments, advertising messages may beselected based on the selection criteria in the user's focusspecification.

FIG. 9 is a high-level flowchart representing some of the steps forsending advertising messages (advertisements) to a respective user inthe chat system, according to certain embodiments of the invention. Itwill be appreciated by those of ordinary skill in the art that one ormore of the acts described may be performed by hardware, software, or acombination thereof as may be embodied in one or more computing systems.The focus specification of the respective user is evaluated (902). Oneor more advertisements are identified based in part on the respectiveuser's focus specification. Optionally, the respective user's trackingrequests to track messages are monitored in order to identifyadvertising messages based on the tracked messages (906). Optionally,the focus specifications of additional users who are tracking the sametarget messages that the respective user is tracking are evaluated toidentify advertising messages based in part on such focus specifications(908). The identified advertising messages are sent to the respectiveuser (910).

FIG. 10 is a schematic illustration of a chat GUI 1000 for displayingmessages to the user, according to certain embodiments of the invention.Client chat application program 330 manages GUI 1000, according to someembodiments. GUI 1000 includes a scrolling message window 1002, amessage entry area 1024, a reply-to area 1022, and an advertising area1026. Advertising area 1026 is for displaying advertising messages suchas advertising messages 1028 that are sent to the respective user by thechat system. Advertising messages may be selected based on selectionprocess as described herein with reference FIG. 9. The embodiments arenot limited to the features shown in FIG. 10, and thus may vary fromimplementation to implementation.

As a non-limiting example, the scrolling message window 1002 displaystarget messages 1012 to the user. Incoming target messages are displayedto the user at a reasonable display rate. Older messages are scrolledoff the message window to make room for newer messages. According to oneembodiment, message 1012 may be preceded by several user-interfacebuttons such as:

-   -   A tracking-on button 1004: the user can begin tracking a given        message by clicking on the tracking-on button 1004 that        corresponds to the particular message. According to one        embodiment, by clicking on tracking button 1004 that corresponds        to a message that the user is already tracking, the user can        “vote” for such a message as being highly interesting to the        user.    -   A tracking-off button 1006: by clicking once on the tracking-off        button 1006 that corresponds to a given message from a tracked        thread, the user can stop tracking subsequent messages in the        sub-thread of the given message. According to one embodiment, by        clicking on the tracking-off button 1006 twice corresponding to        a message in a tracked thread, the user can turn off tracking        for the entire thread. By clicking the tracking-off button 1006        associated with a message that has not been previously tracked        by the user, the user can indicate that the user does not wish        to receive messages that are similar to the message on which the        user clicked. According to certain embodiments, by clicking the        tracking-off button 1006 associated with a message that has not        been previously tracked by the user, the user creates a        selection criterion in the user's focus specification for        excluding such messages.    -   An author button 1010: author button 1010 identifies the author        of a given message. Associated with the author button 1010 are        voting buttons 1010 a (“+” button) and 1010 b (“−” button),        according to certain embodiments. For example, the user can        click on voting button 1010 a once corresponding to a given        message, when the user wishes to see more messages on the topic        of the given message by the author of the given message. As        another example, the user can click on voting button 1010 a        twice when the user wishes to see more messages by the author of        the given message on any topic. Clicking on voting button 1010 a        three times can mean that the user wishes to all subsequent        messages by the author of the given message, for example. As yet        another example, the user can click on voting button 1010 b once        to indicate that the user does not wish to see any messages from        the corresponding sub-thread, clicking twice to indicate that        the system should ignore the corresponding selection criteria in        the user's focus specification that caused the given message to        be selected, and clicking thrice to indicate that the given        message is spam.    -   Feedback buttons 1014, 1016, 1018, 1020: various feedback        buttons may be provided to allow a user to express opinions on        the messages such as messages 1012 that scroll through the        scrolling message window 1002. According to some embodiments,        the user can designate a given message as spam by using a spam        feedback button such as feedback button 1020. Non-limiting        examples of feedback buttons include buttons for sentiments such        as “good”, “bad”, “funny,” “punny,” “boring,” “redundant,”        “agree”, “disagree”, “funny”, “cannot understand”, “irrelevant”,        “spam”, “obscene”, “objectionable”, “please continue”,        “interesting”, “uninteresting”, etc.

According to alternate embodiments, instead of preceding a givenmessage, the user-interface buttons may be semi-transparent buttons thatappear as an overlay on a given message when the user's mouse hoversover the given message. In another embodiment, the buttons may appear atthe side of scrolling message window 1002. The embodiments are notlimited to the user interface buttons and associated operationsdescribed herein. Other appropriate buttons may used for allowing theuser to perform desired operations with respect to the selection anddisplay of messages. In certain embodiments, pop-up menus may be used inlieu of or in addition to user interface buttons.

According to certain embodiments, the target messages may be associatedwith specific display attributes. As a non-limiting example, whentracking is turned on for a given message, the messages in the trackedthread change from a lighter washed out color to a richer tone. Aspreviously described, the user may specify color, font and style for thevarious selection criteria selected by the user in the user'sspecification. Further, advertisements may be displayed to the user inthe advertising area 1026 using appropriate display attributes toattract the attention of the user. Similarly, “popular” messages may bedisplayed to the user using distinguishing display attributes.

Message entry area 1024 allows the user to enter a message or reply to amessage that is displayed in the scrolling message window 1002. Reply-toarea 1022 displays the text of the message to which the user isreplying. In one embodiment, the replied-to message (possibly truncatedto fit in the area) is copied here for verification purposes the momentthe user types the first character of their new message or otherwiseindicates that he or she wants to reply to some message.

FIG. 11 is an alternate schematic illustration of a chat GUI fordisplaying target messages to the user, according to certain embodimentsof the invention. Besides the scrolling message window 1002, reply-toarea 1022 message entry area 1024, and advertising area 1028, GUI 1100shows anchor messages window 1126, tracked threads window 1128 a-1128 n.

Anchor messages window 1126 displays the anchor messages selected by theuser for tracking message threads. The anchor messages window 1126 makesit convenient for the user to terminate tracking one or more messagethreads. To illustrate, assume that the user decides to terminatetracking the thread associated with anchor message J. Anchor messageswindow 1126 makes it convenient for the user to terminate tracking sucha thread by allowing to user to delete anchor message J from anchormessages window 1126. The user may select several threads at a time fordeletion. As another example, the user may close anchor messages window1126 to delete all the tracked threads previously selected for trackingby the user.

Tracked thread windows 1128 display to the user the target messages thatbelong to threads that are tracked by the user. For example, trackedthread window 1128 a displays the target messages that belong to thethread associated with anchor message J. Similarly, tracked threadwindows 1128 b, . . . , 1128 n display the target messages that belongto the threads associated with anchor message K, . . . , and anchormessage P, respectively. For example, if the user terminates trackingthe thread associated with anchor message J, tracked message window 1128a would close automatically, according to certain embodiments.

FIG. 12 is another alternate schematic illustration of a chat GUI fordisplaying target messages to the user, according to certain embodimentsof the invention. Besides the scrolling message window 1002, reply-toarea 1022 message entry area 1024, advertising area 1028, anchormessages window 1126, and tracked threads windows 1128, GUI 1200 shows atransmission rate slider 1206, a popular slider 1208, a topical slider1210, a tracked slider 1212, and a plurality of feedback meters 1226,1228, 1230 and 1232. Further, GUI 1200 shows feedback meters 1226, 1228,1230 and 1232. Such feedback meters provide a qualitative measure ofagreement or disagreement and/or amusement, for example, that themessages authored by the user has generated in the chat community.Feedback meter 1232 indicates a measure of “spam” votes that arereceived in response to the messages authored by the user. GUI 1200 mayhave other types of feedback meters, in addition to, or in lieu of theones shown in GUI 1200. Other types of feedback meters include metersfor expressing sentiments such as “good”, “bad”, “funny,” “punny,”“boring,” “redundant,” “agree”, “disagree”, “funny”, “cannotunderstand”, “irrelevant”, “spam”, “obscene”, “objectionable”, “pleasecontinue”, “interesting”, “uninteresting”, etc. In some embodiments, theset of meters that are displayed are under the user's control. Themessage feedback also can be made available to any user for anyindicated message, and not only to the author of a message. This can beaccomplished by the user selecting some message and (through suitablemeans) requesting that the meters display the feedback for that specificmessage.

The user can use transmission rate slider 1206 to control the overallrate of transmission of target messages to the user. Similarly, the usercan use popular slider 1208, topical slider 1210, and tracked slider1212 to control the mixing ratios of popular, topical and tracked targetmessages, respectively, to the user. Such sliders are also referred toas message fraction sliders. The user setting for the rate slider 1206,popular slider 1208, topical slider 1210, and the tracked slider 1212may be stored in data structure 400 (rate slider 408) as illustrated inFIG. 4, according to certain embodiments. Note that in some embodimentsthe slider settings may be advisory only, and the system may return adifferent mixture, as traffic warrants.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings. Theembodiments were chosen and described in order to best explain theprinciples of the invention and its practical applications, to therebyenable others skilled in the art to best utilize the invention andvarious embodiments with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. A method for relaying messages in a communicationsystem, comprising: at a server having one or more processors and memorystoring instructions for execution by the one or more processors:obtaining a plurality of incoming messages via a messaging applicationof the communication system; identifying one or more messages from amongthe plurality of incoming messages in the communication system, the oneor more messages obtained from a first user; receiving via the messagingapplication of the communication system a feedback message from a seconduser of the communication system about at least one of: the first userand a first message of the one or more messages; and sending via themessaging application of the communication system the feedback messagefrom the second user to a plurality of users of the communicationsystem, wherein the plurality of users track at least one of: the firstuser and the first message.